package com.quanyan.stadium.service;

import com.quanyan.stadium.api.resp.RespUserGradeIntegral;
import com.quanyan.stadium.api.resp.RespUserGradeIntegralList;
import com.quanyan.stadium.entity.TbGameGradeIntegral;
import com.quanyan.stadium.entity.vo.GradeIntegral;
import com.quanyan.stadium.entity.vo.GradeIntegralVo;
import com.quanyan.stadium.entity.vo.QuaryUserGradePoint;
import com.quanyan.stadium.entity.vo.UserGradeIntegral;

import java.util.List;

/**
 *   等级分
 * @author dongshenglin
 * @date 2016/6/21  19:54
 */
public interface GradeIntegralService {

    /**
     * 获取用户等级分信息
     */
    UserGradeIntegral getUserGradeInfo(Integer uid,Integer categoryId);

    /**
     * 获取团队等级分信息
     */
    UserGradeIntegral getTeamGradeInfo(Integer uid,Integer categoryId);

    /**
     * 获取团队等级积分（大球）
     */
    Integer getTeamIntegral(Integer teamId,Integer categoryId);

    /**
     * 通过栏目id和积分获取评级基本信息
     */
    UserGradeIntegral getGradeByIntegral(Integer categoryId,Integer integral);

    /**
     * 通过个人/团体id
     * 获取个人/团体（小球/大球）等级分
     */
    UserGradeIntegral getGradeInfo(Integer uid,Integer categoryId);

    /**
     *  计算等级分
     */
    List<GradeIntegral> calculateGradePoint(QuaryUserGradePoint quaryUserGradePoint);

    /**
     * 等级分说明（2017.01中旬版本）
     */
    List<GradeIntegralVo> getGradeIntegralExplain(List<Integer> categoryList);

    /**
     * 等级分展示（2017.01中旬版本）
     */
    RespUserGradeIntegralList getUserGradeIntegral(Integer uid,List<Integer> categoryList);

    /**
     * 通过栏目ID和等级分查询对应等级下限（2017.01中旬版本）
     */
    TbGameGradeIntegral getMinLevelByIntegral(Integer categoryId,Integer integral);

    /**
     * 用户自评（2017.01中旬版本）
     */
    void evalOwnFLScore(Integer uid, Double score, Integer categoryId);

    /******************************************************下面的接口根据需求的调整已经废弃，下一版本可能删除掉 **************************************************************************/
    /**
     * 获取评级信息（已废弃）
     */
    UserGradeIntegral getSingleGrade(Integer level,Integer categoryId);

    /**
     * 积分计算（已废弃）
     *
     * @return
     */
    Integer integralCalulate(double w, Integer we);
}
